iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
AI & Data

AI x 日常 x 30天系列 第 8

Epoch 8 - 人臉相關論文筆記 x QuatNet

  • 分享至 

  • xImage
  •  

今天開始換分享人臉相關的論文,算是比較熟悉的領域XD

這篇是在做人臉角度估計Head Pose Estimation
QuatNet: Quaternion-Based Head Pose Estimation With Multiregression Loss

傳統方法是用face landmark去估計head pose,但前提是landmarks predict model要夠準,
而DL方法就是直接input face image然後output head pose angle。

Euler angles(歐拉角)

而表示物體在三維空間旋轉的方法有很多,Euler angles(歐拉角)是最直觀的,
Roll, Pitch, Yaw 分別代表三個旋轉軸

但它有萬向節鎖定的問題
萬向節鎖定就是在某些情況下,兩個旋轉軸會重合,會消失一個方向的自由度,
例如,當你先yaw 45度再pitch 90度,和先pitch90度再roll 90度是等價的
事實上,一旦先擇±90度為pitch角,就會導致萬向鎖問題。
這可能會讓訓練期間出現歧義。

Quaternion(四元數)

而Quaternion(四元數)是另一種旋轉表示法。在四維空間處理三維的旋轉。
四元數由四部分組成: 一個q 具有x,y,z坐標和w旋轉份量的向量。

這是他的旋轉公式,將空間的點 p 旋轉為空間的另一個點 Rq(p)
用q* p* q共軛,因為q和q-1共進行了兩次旋轉,所以如果你要旋轉θ,裡面要寫θ/2,

並且優點是可插值計算,所以方便用在計算動畫畫格之間的平滑值。
最重要的是,四元數可以避免萬向鎖問題,

歐拉角轉換到四元數的轉換公式

Non-stationary Property

作者發現人臉角度的影像有Non-stationary Property(非平穩特性):
在20°(正面)內的面部外觀變化緩慢且看起來相似,都能看到兩個眼睛和整個五官,
而當角度高於60°(輪廓面)時,因為一半的臉部不可見,差異幾乎不可察覺。
但當角度在40°至60°範圍內時會發生顯著變化。

解決方法是用ordinal regression,用學習排序的方式,對角度的不同間隔的穩健特徵,
將回歸問題轉化為一系列二分類的子問題。


這是整體網路架構,因為它用四元數表示,所以叫QuatNet
QuatNet的backbone採用GoogLeNet,
最後一層pool層後面接到本文提出的Regression Nets和Ranking Nets。

Regression Nets

回歸網絡的輸出四個值表示為fa1,fa2,fa3和fa4
其中(fa1,fa2,fa3)形成軸,fa4表示角度,
然後將這些輸出轉換為四元數表示(fqx,fqy,fqz,fqw)

用L2 計算loss,四個加起來就是Lreg

Ranking Nets


剛剛講過ordinal regression就是將回歸問題分解為一系列二元分類子任務。
這些二分類子任務就是判斷臉部角度是否大於某個值來學習排名。

以計算qx為例,
Kqx 表示二進制分類子任務的數量,分成幾個等級。
r表示所有預定義等級值,例如把yaw -90~90,分成6個等級,-90, -60, -30….。
(這邊為了方便理解所以用歐拉角舉例,實際上會轉成四元數表示)

h 就是label的one-hot 表示,[0,1]或[1,0],看他是大於label還是小於label
然後用cross-entropy losses,g表示predict vector,m=2,qx, qy, qz三個加總起來。


QuatNet在所有的Benckmark都是表現最佳

Result


若本文對您有些啟發,歡迎訂閱追蹤:)
讓我有撐完30天的動力XD


上一篇
Epoch 7 - 物件辨識論文筆記 x CornerNet-Lite
下一篇
Epoch 9 - 視線估計論文筆記 x SimGAN
系列文
AI x 日常 x 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言